﻿package ygg.encoding.swf.abc.object
{
	import j.sus2maj7.encoding.*;
	
	public class MethodBody implements ISlotContainer
	{
		private var _slots:Vector.<Trait>;
		private var _variables:Vector.<Variable>;
		private var _constants:Vector.<Constant>;
		private var _members:Vector.<Trait>;
		private var _names:Object;
		
		private var _numLocals:uint;
		private var _maxStack:uint;
		private var _initScopeDepth:uint;
		private var _maxScopeDepth:uint;
		private var _localScopeSize:uint;
		
		//private var _codeLength:uint;
		private var _binary:IBinary;
		
		private var _exceptions:Vector.<Exception>;
		
		public var activation:MethodBody; //not sure about this one
		
		public function MethodBody()
		{
			super();
			_slots = new Vector.<Trait>();
			_variables = new Vector.<Variable>();
			_constants = new Vector.<Constant>();
			_members = new Vector.<Trait>();
			_names = {};
		}
		
		public function get slots():Vector.<Trait> { return _slots; }
		
		public function set slots(value:Vector.<Trait>):void
		{
			_slots = value;
		}
		
		public function get variables():Vector.<Variable> { return _variables; }
		
		public function set variables(value:Vector.<Variable>):void
		{
			_variables = value;
		}
		
		public function get constants():Vector.<Constant> { return _constants; }
		
		public function set constants(value:Vector.<Constant>):void
		{
			_constants = value;
		}
		
		public function get members():Vector.<Trait> { return _members; }
		
		public function set members(value:Vector.<Trait>):void
		{
			_members = value;
		}
		
		public function get names():Object { return _names; }
		
		public function set names(value:Object):void
		{
			_names = value;
		}
		
		public function get numLocals():uint { return _numLocals; }
		
		public function set numLocals(value:uint):void
		{
			_numLocals = value;
		}
		
		public function get maxStack():uint { return _maxStack; }
		
		public function set maxStack(value:uint):void
		{
			_maxStack = value;
		}
		
		public function get initScopeDepth():uint { return _initScopeDepth; }
		
		public function set initScopeDepth(value:uint):void
		{
			_initScopeDepth = value;
		}
		
		public function get maxScopeDepth():uint { return _maxScopeDepth; }
		
		public function set maxScopeDepth(value:uint):void
		{
			_maxScopeDepth = value;
		}
		
		public function get localScopeSize():uint { return _localScopeSize; }
		
		public function set localScopeSize(value:uint):void
		{
			_localScopeSize = value;
		}
		
		
		public function get binary():IBinary { return _binary; }
		
		public function set binary(value:IBinary):void
		{
			_binary = value;
		}
		
		public function get exceptions():Vector.<Exception> { return _exceptions; }
		
		public function set exceptions(value:Vector.<Exception>):void
		{
			_exceptions = value;
		}
		
	}
	
}